package negocio;

public class RoboInimigo3 extends Pergonagem implements IInimigo {
    
    public RoboInimigo3(Jogo jogo, int posX, int posY, Natureza natureza){
        super("","imagens/robo-inimigo2.png",jogo, posX, posY, natureza);
        
    }
    protected void logicaMovimento() {
        if(jogo.getJogador().getRetangulo().getX() > posicao.x){
            posicao.dX = 3;
        }else{
            posicao.dX = -3;
        }
        if(jogo.getJogador().getRetangulo().getY() > posicao.y){
            posicao.dY = 3;
        }else{
            posicao.dY = -3;
        }
        
    }
    public void colidiuCom(Animado colidido) {
        Posicao outro = colidido.posicao;
        if (natureza != Natureza.CHAO && natureza != Natureza.FANTASMA && colidido.natureza != Natureza.FANTASMA) {
            if(colidido.equals(jogo.getJogador())){
               colidido.atinge(500); 
            }else if (Math.round(posicao.y + getHeight() - posicao.dY) <= Math.round(outro.y - outro.dY)) {
                // colisao por cima
                this.posicao.y = outro.y - this.getHeight();
                this.posicao.dY = (coefRestituicao * colidido.getMassa() * (outro.dY - posicao.dY) + (getMassa() * posicao.dY) + (colidido.getMassa() * outro.dY)) / (getMassa() + colidido.getMassa());
            } else if (Math.round(posicao.y - posicao.dY) >= Math.round(outro.y + colidido.getHeight() + posicao.dY)) {
                // colisao por baixo
                this.posicao.y = outro.y + colidido.getHeight();
                this.posicao.dY = (coefRestituicao * colidido.getMassa() * (outro.dY - posicao.dY) + (getMassa() * posicao.dY) + (colidido.getMassa() * outro.dY)) / (getMassa() + colidido.getMassa());
            } else if (Math.round(posicao.x + getWidth() - posicao.dX) <= Math.round(outro.x - outro.dX)) {
                // colisao pela esquerda
                this.posicao.x = outro.x - getWidth();
                this.posicao.dX = (coefRestituicao * colidido.getMassa() * (outro.dX - posicao.dX) + (getMassa() * posicao.dX) + (colidido.getMassa() * outro.dX)) / (getMassa() + colidido.getMassa());
            } else if (Math.round(posicao.x - posicao.dX + .5f) >= Math.round(outro.x + colidido.getWidth() - outro.dX)) {
                // colisao pela direita
                this.posicao.x = outro.x + colidido.getWidth();
                this.posicao.dX = (coefRestituicao * colidido.getMassa() * (outro.dX - posicao.dX) + (getMassa() * posicao.dX) + (colidido.getMassa() * outro.dX)) / (getMassa() + colidido.getMassa());
            }
        }
        
        
        
    }
    public int getPoder() {
        return 100;
    }

    public void atirar() {
        
    }
    public int getVidaInicial() {
        return 50;
    }
}
